package com.kuang.exam.modules.sys.lesson.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.kuang.exam.core.api.dto.PagingReqDTO;
import com.kuang.exam.modules.sys.lesson.dto.UserLessonDTO;
import com.kuang.exam.modules.sys.lesson.dto.export.StudentsExportDTO;
import com.kuang.exam.modules.sys.lesson.dto.response.LessonStudentsDTO;
import com.kuang.exam.modules.sys.lesson.entity.SysUserLesson;

import java.util.List;

/**
 * <p>
 * 用户课程信息业务类
 * </p>
 */
public interface SysUserLessonService extends IService<SysUserLesson> {

    /**
     * 删除某课程的全部用户
     *
     * @param lessonIds
     */
    void removeByLessonId(List<String> lessonIds);

    /**
     * 删除某用户的全部课程
     *
     * @param userIds
     */
    void removeByUserId(List<String> userIds);


    /**
     * 分页查询数据
     *
     * @param reqDTO
     * @return
     */
    IPage<UserLessonDTO> paging(PagingReqDTO<UserLessonDTO> reqDTO);

    /**
     * 查找课程学生列表
     *
     * @param reqDTO
     * @return
     */
    IPage<LessonStudentsDTO> pagingStudents(PagingReqDTO<UserLessonDTO> reqDTO);


    /**
     * 当前用户的所有课程列表
     *
     * @return
     */
    List<UserLessonDTO> listByUserId();

    /**
     * 查找某课程的所有老师id
     *
     * @param lessonId
     * @return
     */
    List<String> listByLessonId(String lessonId);

    /**
     * 计算某老师某课程下的学生人数
     *
     * @param lessonId
     * @param teacherId
     * @return
     */
    Integer calcStudNum(String lessonId, String teacherId);


    /**
     * 导入选课名单
     *
     * @param dtoList
     */
    void importExcel(List<StudentsExportDTO> dtoList);

}
